import { loginAsync } from '../../api/user'

const userModule = {
  state: {
    userInfo: null, // 用户基本信息，如：用户名、昵称、头像地址、积分
    token: null, // 用于前后端用户身份认证
  },
  mutations: {
    loginSuccess(state, payload) {
      state.userInfo = payload.userInfo
      state.token = payload.token
    },
    resetUser(state) {
      state.userInfo = null
      state.token = null
    },
  },
  actions: {
    /**
     * action 方法第一个参数是与 store 相同结构的对象
     */
    login(store, payload) {
      return loginAsync(payload.user)
        .then(data => {
          console.log('登录：', data)
          // action 中不能直接更新状态，仍然需要提交 mutation
          store.commit('loginSuccess', data)
          return true
        })
        .catch(err => {
          console.log(err)
          return Promise.reject(err)
        })
    },
  },
}

export default userModule
